#include "Countdown.h"
#include "IRaceController.h"
#include "AnimatedImage.h"
#include "RenderingManager.h"
#include "MeshStorage.h"


///////////////////////////////////////////////////////////////////////////////

Countdown::Countdown(IRaceController& raceController,
                     IRenderingManager& renderingManager,
                     IMeshStorage& meshStorage)
      : m_raceController(raceController),
      m_renderingManager(renderingManager),
      m_polePositionLight(meshStorage.getPolePositionLight()),
      m_timerIdx(0),
      m_time(0)
{
   m_countdownTimer.push_back(2);
   m_countdownTimer.push_back(4);
   m_countdownTimer.push_back(4.5);

   float w = m_polePositionLight.getWidth();
   m_polePositionLight.setPosition(0.5f - w / 2.f, 0.1f);
}

///////////////////////////////////////////////////////////////////////////////

Countdown::~Countdown(void)
{
}

///////////////////////////////////////////////////////////////////////////////

void Countdown::update(float timeElapsed)
{
   m_time += timeElapsed;
   if (m_time > m_countdownTimer[m_timerIdx])
   { 
      m_polePositionLight.advanceFrame();
      m_timerIdx++;
   }

   if (m_timerIdx >= m_countdownTimer.size())
   {
      m_raceController.startRace();
   }
}

///////////////////////////////////////////////////////////////////////////////

void Countdown::activate()
{
   m_renderingManager.startRendering(m_polePositionLight);
   m_time = 0;
   m_timerIdx = 0;
}

///////////////////////////////////////////////////////////////////////////////

void Countdown::deactivate()
{
   m_renderingManager.stopRendering(m_polePositionLight);
}

///////////////////////////////////////////////////////////////////////////////

void Countdown::processInput(UCHAR* keyBuffer, float timeElapsed)
{
}

///////////////////////////////////////////////////////////////////////////////